//
//  TFPopoverBaseView.h
//  TFFoundation
//
//  Created by TFAppleWork-Summer on 2017/7/10.
//  Copyright © 2017年 TFAppleWork-Summer. All rights reserved.
//

#import <UIKit/UIKit.h>

@class TFPopoverBaseView;

/**
 popoverView编辑的block

 @param popoverView 弹出的视图
 */
typedef void(^TFPopoverBaseViewEditBlock)(__kindof TFPopoverBaseView * _Nonnull popoverView);

/**
 弹出层转变类型
 */
typedef NS_ENUM(NSUInteger, TFPopoverTransitionType) {
    /**
     弹出层转变类型--显示
     */
    TFPopoverTransitionTypeShow,
    /**
     弹出层转变类型--消失
     */
    TFPopoverTransitionTypeDismiss,
};

extern const NSInteger kTFPopoverBaseViewTag;

/**
 弹出框视图基类，注：initWithFrame方法中已添加了contentView，设置了背景色，并添加消失手势，
 */
@interface TFPopoverBaseView : UIView

/**
 显示的类方法，在block中返回初始化好的弹出框视图，默认会设置popoverView的frame为window的bounds，且会被添加到window上去。

 @param popoverViewEditBlock 编辑弹出框视图的block，若赋值此block需要添加view到对应的父试图
 */
+ (void)showTransitionWithPopoverViewEditBlock:(nullable TFPopoverBaseViewEditBlock)popoverViewEditBlock;

/**
 消失的类方法
 
 @param completion 动画完成block
 */
+ (void)dismissTransitionWithCompletion:(void(^_Nullable)(BOOL finished))completion;

/**
 内容的view，大小需要子类自己实现，initWithFrame方法中已添加了contentView，子类无需重复添加。
 */
@property (nonatomic, strong, nonnull) UIView *contentView;

/**
 执行过渡动画的方法，子类可重载此方法，定制自己的动画

 @param type 过渡类型
 @param completion 动画完成block
 */
- (void)transitionAniamtionWithWithType:(TFPopoverTransitionType)type completion:(void(^_Nullable)(BOOL finished))completion;

@end
